package consultorio;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
// http://www.chuidiang.com/java/herramientas/javamail/enviar-correo-javamail.php
// http://www.lab.dit.upm.es/~lprg/material/apuntes/doc/doc.htm
/**
 *
 * @author CarlosDiaz
 */
public class Mail {
  private Properties property;
  private String mailHost = "smtp.gmail.com";
  private String mailPort = "587";
  private String mailUser = "jcarlos.9102@gmail.com";
  private String mailSubject = "Consultorio nutricional";
  private String mailFrom = "jcarlos.9102@gmail.com";
  private String mailPass = "password";
  

  /**
   * Constructor de la clase que se encarga de generar los parametros de la cuenta de correo
   */
  public Mail() {
    try {
      this.property = new Properties();

      // Nombre del host de correo
      this.property.setProperty("mail.smtp.host", this.mailHost);

      // TLS si está disponible
      this.property.setProperty("mail.smtp.starttls.enable", "true");

      // Puerto de gmail para envio de correos
      this.property.setProperty("mail.smtp.port", this.mailPort);

      // Nombre del usuario
      this.property.setProperty("mail.smtp.user", this.mailUser);

      // Si requiere o no usuario y password para conectarse.
      this.property.setProperty("mail.smtp.auth", "true");
      
      
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  /**
   * Funcion que asigna el asunto del correo electronico
   * @param subject String con el asunto del correo electronico 
   */
  public void setSubject(String subject){
    this.mailSubject = subject;
  }
  
  
/**
 * Funcion que realiza el envio del correo electronico
 * @param content Cuerpo o contenido que debe de contener el correo
 * @param mailTo Correo electronico del destinatario
 * @exception Excepcion de error en caso de ocurrir alguno
 * @return Devuelve true en caso de ser enviado el correo o false en caso de haber algun error
 */
  public boolean send(String content, String mailTo) {
    try {
      Session session = Session.getDefaultInstance(this.property);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      
      // Quien envia el correo
      message.setFrom(new InternetAddress(this.mailUser));
      
      // A quien va dirigido el correo
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
      // Asunto del correo
      message.setSubject(this.mailSubject);
      // Cuerpo o contenido del correo
      message.setText(content);

      Transport transport = session.getTransport("smtp");
      transport.connect(this.mailFrom, this.mailPass);
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
      return true;

    } 
    catch (Exception ex) {
      ex.printStackTrace();
      return false;
    }
  }
}
